// #ifndef __PID_H
// #define __PID_H

// #include "zf_common_headfile.h"

// enum
// {
//     PID_POSITION = 0,
//     PID_DELTA,
//     PID_VELOCITY,
//     PID_CURRENT,
//     PID_NUM
// };

// typedef struct
// {
//     volatile int16 Target;//目标速度
//     volatile int16 Actual;//实际速度
//     volatile int16 Out;//输出值

//     volatile int16 Kp;//比例项
//     volatile int16 Ki;//积分项
//     volatile int16 Kd;//微分项

//     volatile int16 Error0;//本次误差
//     volatile int16 Error1;//上次误差
//     volatile int16 Error2;//上上次误差
//     volatile int16 ErrorInt;//累计误差

//     volatile int16 OutMax;//输出最大值
//     volatile int16 OutMin;//输出最小值

//     uint32_t Pid_mode;//pid模式
// } PID_t;
// // PID控制器结构体
// typedef struct {
//     float Kp;           // 比例系数
//     float Ki;           // 积分系数
//     float Kd;           // 微分系数
//     float output_limit; // PWM输出限幅值
    
//     float integral;     // 积分项累积值
//     float prev_error;   // 上一次的误差
//     float prev_measurement; // 上一次的实际速度
// } SpeedPIDController;
// volatile int16 SpeedPID_Compute(SpeedPIDController *pid, volatile int16 target_speed, volatile int16 actual_speed);
// void SpeedPID_Init(SpeedPIDController *pid, float Kp, float Ki, float Kd, float output_limit);
// extern PID_t MotorA;
// extern PID_t MotorB;


// extern SpeedPIDController speed_pidA,speed_pidB;
// extern uint8_t MotorA_dir,MotorB_dir;
// void Motor_Target_Set(float spe1, float spe2);//设置电机速度
// volatile int16 PID_Update(PID_t *p,volatile int16 Tar,volatile int16 Act);//pid更新
// void Pid_Init(PID_t *pid, uint32_t mode, volatile int16 p, volatile int16 i, volatile int16 d);//pid初始化
// void Pidout_Limit(PID_t *pid, volatile int16 Min, volatile int16 Max);//pid输出限幅
// void Pid_Cal(void);//计算pid
// #endif
